SQL en Azure Data Studio
Más articulos en Estadistica4all
Se recomienda abrir el artículo en un ordenador o en una tablet.
1 Instalación de Azure Data Studio
Primero hay que descargar Azure Data Studio. Ello puede hacerse facilmente desde el siguiente link
También es necesario descargar SQL Server 2019 Developer Edition. Lo podemos hacer desde el siguiente link
Una vez que hemos instalado correctamente ambos programas, abrilos Azure Data Studio.
Nos encontraremos una pantalla similar a la siguiente.
Debemos establecer una conexión con un servidor para poder trabajar con bases de datos. En nuestro caso será un servidor alojado en local en nuestro propio ordinador. Para establecer la conexion debemos pinchar en la parte subrayada de amarillo.
Tras pulsar ahi nos encontraremos con una pantalla similar a la siguiente:
Debemos rellenar el campo Server con “localhost”, tal y como se muestra en la siguiente imagen:
Posteriormente saldrá un mensaje como este. Le daos al boton azul (Enable Trust server certificate):
Si se ha conectado correctamente al servidor en la pantalla debe aparecer algo similar a lo siguiente:
Pinchando en New Query se abrirá un script de SQL donde podemos empezar a trabajar usando sentencias de SQL.
2 Crear una nueva base de datos en Azure Data Studio
Vamos a crear una nueva base de datos llamada Base_Datos_Fabio:
El codigo empleado en la imagen para crear una nueva base de datos es el siguiente:
-- Crear una nueva base de datos
USE master
GO
IF NOT EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'Base_Datos_Fabio'
)
CREATE DATABASE [Base_Datos_Fabio];
GO
IF SERVERPROPERTY('ProductVersion') > '12'
ALTER DATABASE [Base_Datos_Fabio] SET QUERY_STORE=ON;
GOTras la ejecución del codigo SQL anterior se deberia crear la base de datos, y ello deberia reflejarase en la parte izquierda del entorno, tal y como se muestra en la imagen:
3 Crear una nueva tabla en una base de datos en Azure Data Studio
Ahora vamos a crear una nueva tabla dentro de la base de datos que acabamos de crear. Para ello se puede usar el mismo script de SQL pero modificando el elemento señalado en la parte superior de la pantalla. Este elemento permite fijar en que base de datos vamos a realizar los cambios. En este caso seleccionamos la base de datos Base_Datos_Fabio, que es la que hemos creado en el paso anterior.
El codigo utilizado para crear la nueva tabla es el siguiente:
-- Crear una nueva tabla dentro de la base de datos
-- Create a new table called 'Clientes' in schema 'dbo'
-- Drop the table if it already exists
IF OBJECT_ID('dbo.Clientes', 'U') IS NOT NULL
DROP TABLE dbo.Clientes;
GO
-- Create the table in the specified schema
CREATE TABLE dbo.Clientes
(
ClienteId nvarchar(50) NOT NULL PRIMARY KEY, -- primary key column --> impide repeticiones de valores en esta columna
Nombre char (50) NOT NULL,
Pais nvarchar(50) NOT NULL,
Ciudad nvarchar(50) NOT NULL,
Email nvarchar (50) NOT NULL,
Telefono nvarchar (50) NOT NULL
);
GOEjecutamos el codigo anterior y verificamos que se ha creado la tabla Clientes dentro de la base de datos Base_Datos_Fabio:
A partir de ahora todas las operaciones que hagamos usando codigo SQL serán ejecutadas desde un script de SQL dentro del entorno Azure Data Studio, pero no se van a mostrar más capturas de pantalla sobre ello. Lo que haremos es mostrar el codigo que se debe ejecutar en cada ocasión y las salidas obtenidas tras su ejecución.
Vamos a crear otras dos tablas más (proveedores y ventas) dentro de la base de datos Base_Datos_Fabio.
El codigo empleado para crearlas es el siguiente:
IF OBJECT_ID('dbo.Proveedores', 'U') IS NOT NULL
DROP TABLE dbo.Proveedores;
GO
-- Create the table in the specified schema
CREATE TABLE dbo.Proveedores
(
ProveedorId nvarchar (50) NOT NULL PRIMARY KEY, -- primary key column
Nombre nvarchar (50) NOT NULL,
Email nvarchar(50) NOT NULL,
Telefono nvarchar (50) NOT NULL
);
GOIF OBJECT_ID('dbo.Ventas', 'U') IS NOT NULL
DROP TABLE dbo.Ventas;
GO
-- Create the table in the specified schema
CREATE TABLE dbo.Ventas
(
VentasId nvarchar (50) NOT NULL PRIMARY KEY, -- primary key column
Producto char (50) NOT NULL,
Precio float (50) NOT NULL,
Cliente nvarchar (50) NOT NULL,
Proveedor nvarchar (50) NOT NULL
);
GO3.1 Clave primaria
La sentencia PRIMARY KEY se asocia a las columnas que son identificadores únicos principales.
La sentencia PRIMARY KEY asociada en una columna impide que haya valores repetidos en esa columna.
Este tipo de columnas son fundamentales en las bases de datos puesto que permitirán unir tablas mediante diferentes operaciones que se verán mas adelante.
3.2 Not Null y Null
La sentencia NOT NULL asociada en una columna impide que esta tenga valores nulos.
La sentencia NULL asociada en una columna permite que esta tenga valores nulos.
4 Insertar filas en una tabla
INSERT INTO dbo.Clientes
([ClienteId], [Nombre], [Pais], [Ciudad], [Email], [Telefono])
VALUES
( 'C1', N'Orlando', N'Australia', N'', N'' , N'917755028'),
( 'C2', N'Keith', N'India', N'', N'keith0@adventure-works.com', N''),
( 'C3', N'Donna', N'Germany', N'Berlin', N'donna0@adventure-works.com', N'915547890'),
( 'C4', N'Janet', N'United States', N'California', N'janet1@adventure-works.com', N''),
( 'C5', N'Fabio', N'España', N'Madrid', N'fabio10@gmail.com', N''),
( 'C6', N'Juan', N'España', N'Sevilla', N'' , N'915869028'),
( 'C7', N'Lucia', N'España', N'', N'LuciaPerez@hotmail.com', N''),
( 'C8', N'Pedro', N'Italia', N'Roma', N'Pedro99@gmail.com', N'910007890'),
( 'C9', N'Sergio', N'United States', N'New York', N'sergio_as@gmail.com', N''),
( 'C10', N'Grecia', N'Peru', N'Lima', N'Grecia89@gmail.com', N'')
GO| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 | ||
| C10 | Grecia | Peru | Lima | Grecia89@gmail.com | |
| C2 | Keith | India | keith0@adventure-works.com | ||
| C3 | Donna | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Janet | United States | California | janet1@adventure-works.com | |
| C5 | Fabio | España | Madrid | fabio10@gmail.com | |
| C6 | Juan | España | Sevilla | 915869028 | |
| C7 | Lucia | España | LuciaPerez@hotmail.com | ||
| C8 | Pedro | Italia | Roma | Pedro99@gmail.com | 910007890 |
| C9 | Sergio | United States | New York | sergio_as@gmail.com |
INSERT INTO dbo.Ventas
([VentasId], [Producto], [Precio], [Cliente], [Proveedor])
VALUES
( 'V1', N'Alfombra', N'1500', N'C1' , N'P1'),
( 'V2', N'Killim', N'699.50', N'C3', N'P1'),
( 'V3', N'Killim', N'475', N'C9', N'P3'),
( 'V4', N'Alfombra', N'5000', N'C4' , N'P1'),
( 'V5', N'Killim', N'499.50', N'C8', N'P1'),
( 'V6', N'Killim', N'555', N'C5', N'P3'),
( 'V7', N'Alfombra', N'2500', N'C2' , N'P1'),
( 'V8', N'Killim', N'299.50', N'C10', N'P1'),
( 'V9', N'Killim', N'600', N'C2', N'P3'),
( 'V10', N'Alfombra', N'1200', N'C7' , N'P1'),
( 'V11', N'Killim', N'500', N'C8', N'P1'),
( 'V12', N'Killim', N'650', N'C9', N'P3'),
( 'V13', N'Alfombra', N'3500', N'C7' , N'P1'),
( 'V14', N'Killim', N'1000', N'C6', N'P1'),
( 'V15', N'Killim', N'350', N'C10', N'P3')
GO| VentasId | Producto | Precio | Cliente | Proveedor |
|---|---|---|---|---|
| V1 | Alfombra | 1500 | C1 | P1 |
| V10 | Alfombra | 1200 | C7 | P1 |
| V11 | Killim | 500 | C8 | P1 |
| V12 | Killim | 650 | C9 | P3 |
| V13 | Alfombra | 3500 | C7 | P1 |
| V14 | Killim | 1000 | C6 | P1 |
| V15 | Killim | 350 | C10 | P3 |
| V2 | Killim | 699,5 | C3 | P1 |
| V3 | Killim | 475 | C9 | P3 |
| V4 | Alfombra | 5000 | C4 | P1 |
| V5 | Killim | 499,5 | C8 | P1 |
| V6 | Killim | 555 | C5 | P3 |
| V7 | Alfombra | 2500 | C2 | P1 |
| V8 | Killim | 299,5 | C10 | P1 |
| V9 | Killim | 600 | C2 | P3 |
-- Insert rows into table 'Proveedores'
INSERT INTO dbo.Proveedores
([ProveedorId], [Nombre], [Email], [Telefono])
VALUES
( 'P1', N'Intertrade', N'Intertrade@gmail.com', N'912223344'),
( 'P2', N'SaidKarpet', N'SaidKarpet@gmail.com', N'912783794'),
( 'P3', N'OrientKillim', N'OrientKillim@gmail.com', N'9100155475')
GO| ProveedorId | Nombre | Telefono | |
|---|---|---|---|
| P1 | Intertrade | Intertrade@gmail.com | 912223344 |
| P2 | SaidKarpet | SaidKarpet@gmail.com | 912783794 |
| P3 | OrientKillim | OrientKillim@gmail.com | 9100155475 |
4.1 Comprobación de la restricción PRIMARY KEY
INSERT INTO dbo.Proveedores
([ProveedorId], [Nombre], [Email], [Telefono])
VALUES
( 'P3' , 'AlfombrasSA', N'AlfombrasSA@gmail.com', N'91235344')
GOInfracción de la restricción PRIMARY KEY 'PK__Proveedo__61266A5981C729E1'. No se puede insertar una clave duplicada en el objeto 'dbo.Proveedores'. El valor de la clave duplicada es (P3).
4.2 Comprobación de la restricción NOT NULL
INSERT INTO dbo.Proveedores
([ProveedorId], [Nombre], [Email], [Telefono])
VALUES
( 'P4' , NULL, N'AlfombrasSA@gmail.com', N'91235344')
GONo se puede insertar el valor NULL en la columna 'Nombre', tabla 'Base_Datos_Fabio.dbo.Proveedores'. La columna no admite valores NULL. Error de INSERT.
5 Importar un CSV como una tabla
Primero debemos instalar la extension SQL Server Import en Azure Data Studio. Lo podemos hacer como se muestra en la imagen siguiente:
6 Vista completa de una tabla
SELECT * FROM dbo.Clientes;| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 | ||
| C10 | Grecia | Peru | Lima | Grecia89@gmail.com | |
| C2 | Keith | India | keith0@adventure-works.com | ||
| C3 | Donna | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Janet | United States | California | janet1@adventure-works.com | |
| C5 | Fabio | España | Madrid | fabio10@gmail.com | |
| C6 | Juan | España | Sevilla | 915869028 | |
| C7 | Lucia | España | LuciaPerez@hotmail.com | ||
| C8 | Pedro | Italia | Roma | Pedro99@gmail.com | 910007890 |
| C9 | Sergio | United States | New York | sergio_as@gmail.com |
7 Seleccionar columnas de una tabla
SELECT Nombre, Pais, Ciudad FROM dbo.Clientes;| Nombre | Pais | Ciudad |
|---|---|---|
| Orlando | Australia | |
| Grecia | Peru | Lima |
| Keith | India | |
| Donna | Germany | Berlin |
| Janet | United States | California |
| Fabio | España | Madrid |
| Juan | España | Sevilla |
| Lucia | España | |
| Pedro | Italia | Roma |
| Sergio | United States | New York |
8 Asignar un alias a una columna
SELECT Nombre AS NewName
FROM dbo.Clientes;| NewName |
|---|
| Orlando |
| Grecia |
| Keith |
| Donna |
| Janet |
| Fabio |
| Juan |
| Lucia |
| Pedro |
| Sergio |
9 Filtrar filas de una tabla
SELECT * FROM dbo.Clientes WHERE Nombre = 'Fabio' ;| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C5 | Fabio | España | Madrid | fabio10@gmail.com |
SELECT * FROM dbo.Clientes WHERE Nombre != 'Fabio' ;| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 | ||
| C10 | Grecia | Peru | Lima | Grecia89@gmail.com | |
| C2 | Keith | India | keith0@adventure-works.com | ||
| C3 | Donna | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Janet | United States | California | janet1@adventure-works.com | |
| C6 | Juan | España | Sevilla | 915869028 | |
| C7 | Lucia | España | LuciaPerez@hotmail.com | ||
| C8 | Pedro | Italia | Roma | Pedro99@gmail.com | 910007890 |
| C9 | Sergio | United States | New York | sergio_as@gmail.com |
SELECT * FROM dbo.Ventas WHERE Precio < 500 ;| VentasId | Producto | Precio | Cliente | Proveedor |
|---|---|---|---|---|
| V15 | Killim | 350 | C10 | P3 |
| V3 | Killim | 475 | C9 | P3 |
| V5 | Killim | 499,5 | C8 | P1 |
| V8 | Killim | 299,5 | C10 | P1 |
SELECT * FROM dbo.Ventas WHERE Precio < 2000 AND Precio > 500 ;| VentasId | Producto | Precio | Cliente | Proveedor |
|---|---|---|---|---|
| V1 | Alfombra | 1500 | C1 | P1 |
| V10 | Alfombra | 1200 | C7 | P1 |
| V12 | Killim | 650 | C9 | P3 |
| V14 | Killim | 1000 | C6 | P1 |
| V2 | Killim | 699,5 | C3 | P1 |
| V6 | Killim | 555 | C5 | P3 |
| V9 | Killim | 600 | C2 | P3 |
SELECT * FROM dbo.Ventas WHERE Precio <= 2000 OR Precio > 500 ;| VentasId | Producto | Precio | Cliente | Proveedor |
|---|---|---|---|---|
| V1 | Alfombra | 1500 | C1 | P1 |
| V10 | Alfombra | 1200 | C7 | P1 |
| V11 | Killim | 500 | C8 | P1 |
| V12 | Killim | 650 | C9 | P3 |
| V13 | Alfombra | 3500 | C7 | P1 |
| V14 | Killim | 1000 | C6 | P1 |
| V15 | Killim | 350 | C10 | P3 |
| V2 | Killim | 699,5 | C3 | P1 |
| V3 | Killim | 475 | C9 | P3 |
| V4 | Alfombra | 5000 | C4 | P1 |
| V5 | Killim | 499,5 | C8 | P1 |
| V6 | Killim | 555 | C5 | P3 |
| V7 | Alfombra | 2500 | C2 | P1 |
| V8 | Killim | 299,5 | C10 | P1 |
| V9 | Killim | 600 | C2 | P3 |
SELECT Nombre , Email FROM dbo.Proveedores WHERE Email = 'Intertrade@gmail.com' ;| Nombre | |
|---|---|
| Intertrade | Intertrade@gmail.com |
SELECT Producto , Cliente, Proveedor FROM dbo.Ventas WHERE Precio < 2000 AND Precio > 500 ;| Producto | Cliente | Proveedor |
|---|---|---|
| Alfombra | C1 | P1 |
| Alfombra | C7 | P1 |
| Killim | C9 | P3 |
| Killim | C6 | P1 |
| Killim | C3 | P1 |
| Killim | C5 | P3 |
| Killim | C2 | P3 |
SELECT*FROM Clientes WHERE Nombre is NOT NULL| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 | ||
| C2 | Keith | India | keith0@adventure-works.com | ||
| C3 | Donna | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Janet | United States | California | janet1@adventure-works.com | |
| C5 | Fabio | España | Madrid | fabio@gmail.com |
SELECT * FROM dbo.Clientes WHERE Nombre in ( 'Orlando' , 'Fabio') ;| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 | ||
| C5 | Fabio | España | Madrid | fabio10@gmail.com |
SELECT * FROM dbo.Clientes WHERE Nombre not in ( 'Orlando' , 'Fabio') ;| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C10 | Grecia | Peru | Lima | Grecia89@gmail.com | |
| C2 | Keith | India | keith0@adventure-works.com | ||
| C3 | Donna | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Janet | United States | California | janet1@adventure-works.com | |
| C6 | Juan | España | Sevilla | 915869028 | |
| C7 | Lucia | España | LuciaPerez@hotmail.com | ||
| C8 | Pedro | Italia | Roma | Pedro99@gmail.com | 910007890 |
| C9 | Sergio | United States | New York | sergio_as@gmail.com |
10 Eliminar filas de una tabla
DELETE from Ventas| VentasId | Producto | Precio | Cliente | Proveedor |
|---|
Delete from Clientes WHERE Nombre = 'Fabio'| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 | ||
| C10 | Grecia | Peru | Lima | Grecia89@gmail.com | |
| C2 | Keith | India | keith0@adventure-works.com | ||
| C3 | Donna | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Janet | United States | California | janet1@adventure-works.com | |
| C6 | Juan | España | Sevilla | 915869028 | |
| C7 | Lucia | España | LuciaPerez@hotmail.com | ||
| C8 | Pedro | Italia | Roma | Pedro99@gmail.com | 910007890 |
| C9 | Sergio | United States | New York | sergio_as@gmail.com |
11 Eliminar una tabla
DROP TABLE Clientes 12 Actualizar columnas de una table
Primero volvemos a cargar las tablas Ventas y Clientes para recuperar su estado original, puesto que hemos eliminado todas las filas de Ventas y una de Clientes.
Una vez hecho lo anterior, continuamos.
UPDATE Clientes set Nombre = 'Messi' WHERE ClienteId = 'C1'| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Messi | Australia | 917755028 | ||
| C10 | Grecia | Peru | Lima | Grecia89@gmail.com | |
| C2 | Keith | India | keith0@adventure-works.com | ||
| C3 | Donna | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Janet | United States | California | janet1@adventure-works.com | |
| C5 | Fabio | España | Madrid | fabio10@gmail.com | |
| C6 | Juan | España | Sevilla | 915869028 | |
| C7 | Lucia | España | LuciaPerez@hotmail.com | ||
| C8 | Pedro | Italia | Roma | Pedro99@gmail.com | 910007890 |
| C9 | Sergio | United States | New York | sergio_as@gmail.com |
UPDATE Clientes set Nombre = 'Messi' , Pais = 'Argentina' WHERE ClienteId = 'C1'| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Messi | Argentina | 917755028 | ||
| C10 | Grecia | Peru | Lima | Grecia89@gmail.com | |
| C2 | Keith | India | keith0@adventure-works.com | ||
| C3 | Donna | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Janet | United States | California | janet1@adventure-works.com | |
| C5 | Fabio | España | Madrid | fabio10@gmail.com | |
| C6 | Juan | España | Sevilla | 915869028 | |
| C7 | Lucia | España | LuciaPerez@hotmail.com | ||
| C8 | Pedro | Italia | Roma | Pedro99@gmail.com | 910007890 |
| C9 | Sergio | United States | New York | sergio_as@gmail.com |
UPDATE Clientes set Nombre = 'Messi' | ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Messi | Argentina | 917755028 | ||
| C10 | Messi | Peru | Lima | Grecia89@gmail.com | |
| C2 | Messi | India | keith0@adventure-works.com | ||
| C3 | Messi | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Messi | United States | California | janet1@adventure-works.com | |
| C5 | Messi | España | Madrid | fabio10@gmail.com | |
| C6 | Messi | España | Sevilla | 915869028 | |
| C7 | Messi | España | LuciaPerez@hotmail.com | ||
| C8 | Messi | Italia | Roma | Pedro99@gmail.com | 910007890 |
| C9 | Messi | United States | New York | sergio_as@gmail.com |
12.1 Fijar un valor por defecto para una columna
IF OBJECT_ID('dbo.Otra_Tabla_1', 'U') IS NOT NULL
DROP TABLE dbo.Otra_Tabla_1;
GO
-- Create the table in the specified schema
CREATE TABLE dbo.Otra_Tabla_1
(
Id nvarchar (50) NOT NULL PRIMARY KEY, -- primary key column
Nombre nvarchar (50) NOT NULL,
Email nvarchar(50) NOT NULL DEFAULT 'no tiene',
Telefono nvarchar (50) NOT NULL DEFAULT 'desconocido'
);
GOINSERT INTO dbo.Otra_Tabla_1
([Id], [Nombre], [Email], [Telefono])
VALUES
( 1 , 'Juan', DEFAULT , DEFAULT),
( 2 , 'Rodrigo', DEFAULT , '915568799'),
( 3 , 'Sofia', DEFAULT , DEFAULT),
( 4 , 'Irene', 'Irene99@hotmail.es' , '914478236'),
( 5 , 'Luis', 'LuisMP@gmail.com' , DEFAULT)
GO | Id | Nombre | Telefono | |
|---|---|---|---|
| 1 | Juan | no tiene | desconocido |
| 2 | Rodrigo | no tiene | 915568799 |
| 3 | Sofia | no tiene | desconocido |
| 4 | Irene | Irene99@hotmail.es | 914478236 |
| 5 | Luis | LuisMP@gmail.com | desconocido |
13 Columnas calculadas a partir de otras
IF OBJECT_ID('dbo.Otra_Tabla_Ventas', 'U') IS NOT NULL
DROP TABLE dbo.Otra_Tabla_Ventas;
GO
-- Create the table in the specified schema
CREATE TABLE dbo.Otra_Tabla_Ventas
(
VentasId nvarchar (50) NOT NULL PRIMARY KEY, -- primary key column
Producto char (50) NOT NULL,
Precio float (50) NOT NULL,
Descuento float (50) NOT NULL,
Cliente nvarchar (50) NOT NULL,
Proveedor nvarchar (50) NOT NULL
);
GO
-- Insert rows
INSERT INTO dbo.Otra_Tabla_Ventas
([VentasId], [Producto], [Precio], [Descuento], [Cliente], [Proveedor])
VALUES
( 'V1', 'Alfombra', 1500, 0.5 ,'C2' , 'P1'),
( 'V2', 'Killim', 699.50, 0.25, 'C3', 'P1'),
( 'V3', 'Killim', 475, 0.10, 'C2', 'P3'),
( 'V4', 'Alfombra', 1500, 0.5 ,'C7' , 'P1'),
( 'V5', 'Alfombra', 5000, 0.30, 'C5', 'P1'),
( 'V6', 'Killim', 250, 0.10, 'C9', 'P3')
GO| VentasId | Producto | Precio | Descuento | Cliente | Proveedor |
|---|---|---|---|---|---|
| V1 | Alfombra | 1500 | 0,5 | C2 | P1 |
| V2 | Killim | 699,5 | 0,25 | C3 | P1 |
| V3 | Killim | 475 | 0,1 | C2 | P3 |
| V4 | Alfombra | 1500 | 0,5 | C7 | P1 |
| V5 | Alfombra | 5000 | 0,3 | C5 | P1 |
| V6 | Killim | 250 | 0,1 | C9 | P3 |
| 475 | 0,1 | C2 | P3 |
SELECT VentasId, Producto, Precio, Descuento, 'Precio_Final' = Precio - Precio*Descuento, Cliente, Proveedor FROM Otra_Tabla_Ventas| VentasId | Producto | Precio | Descuento | Precio_Final | Cliente | Proveedor |
|---|---|---|---|---|---|---|
| V1 | Alfombra | 1500 | 0,5 | 750 | C2 | P1 |
| V2 | Killim | 699,5 | 0,25 | 524,625 | C3 | P1 |
| V3 | Killim | 475 | 0,1 | 427,5 | C2 | P3 |
| V4 | Alfombra | 1500 | 0,5 | 750 | C7 | P1 |
| V5 | Alfombra | 5000 | 0,3 | 3500 | C5 | P1 |
| V6 | Killim | 250 | 0,1 | 225 | C9 | P3 |
14 Concatenar strings de filas distintas
Primero volvemos a cargar la tabla clientes tal y como la teniamos en un inicio:
IF OBJECT_ID('dbo.Clientes', 'U') IS NOT NULL
DROP TABLE dbo.Clientes;
GO
-- Create the table in the specified schema
CREATE TABLE dbo.Clientes
(
ClienteId nvarchar(50) NOT NULL PRIMARY KEY, -- primary key column --> impide repeticiones de valores en esta columna
Nombre char (50) NOT NULL,
Pais nvarchar(50) NOT NULL,
Ciudad nvarchar(50) NOT NULL,
Email nvarchar (50) NOT NULL,
Telefono nvarchar (50) NOT NULL
);
GO
INSERT INTO dbo.Clientes
([ClienteId], [Nombre], [Pais], [Ciudad], [Email], [Telefono])
VALUES
( 'C1', N'Orlando', N'Australia', N'', N'' , N'917755028'),
( 'C2', N'Keith', N'India', N'', N'keith0@adventure-works.com', N''),
( 'C3', N'Donna', N'Germany', N'Berlin', N'donna0@adventure-works.com', N'915547890'),
( 'C4', N'Janet', N'United States', N'California', N'janet1@adventure-works.com', N''),
( 'C5', N'Fabio', N'España', N'Madrid', N'fabio10@gmail.com', N''),
( 'C6', N'Juan', N'España', N'Sevilla', N'' , N'915869028'),
( 'C7', N'Lucia', N'España', N'', N'LuciaPerez@hotmail.com', N''),
( 'C8', N'Pedro', N'Italia', N'Roma', N'Pedro99@gmail.com', N'910007890'),
( 'C9', N'Sergio', N'United States', N'New York', N'sergio_as@gmail.com', N''),
( 'C10', N'Grecia', N'Peru', N'Lima', N'Grecia89@gmail.com', N'')
GOSELECT Nombre, 'nueva_columna' = Pais + ' - ' + Ciudad FROM Clientes| Nombre | nueva_columna |
|---|---|
| Orlando | Australia - |
| Grecia | Peru - Lima |
| Keith | India - |
| Donna | Germany - Berlin |
| Janet | United States - California |
| Fabio | España - Madrid |
| Juan | España - Sevilla |
| Lucia | España - |
| Pedro | Italia - Roma |
| Sergio | United States - New York |
15 Ordenar tabla por columnas
SELECT*FROM Ventas ORDER BY Precio ASC| VentasId | Producto | Precio | Descuento | Cliente | Proveedor |
|---|---|---|---|---|---|
| V3 | Killim | 475 | 0,1 | C2 | P3 |
| V2 | Killim | 699,5 | 0,25 | C3 | P1 |
| V1 | Alfombra | 1500 | 0,5 | C2 | P1 |
SELECT*FROM Ventas ORDER BY Precio DESC| VentasId | Producto | Precio | Descuento | Cliente | Proveedor |
|---|---|---|---|---|---|
| V1 | Alfombra | 1500 | 0,5 | C2 | P1 |
| V2 | Killim | 699,5 | 0,25 | C3 | P1 |
| V3 | Killim | 475 | 0,1 | C2 | P3 |
16 Seleccionar filas por strings con Like y Not Like
SELECT * FROM dbo.Clientes WHERE Nombre like '%lan%' ;| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 |
SELECT * FROM dbo.Clientes WHERE Nombre like '%i%' ;| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C2 | Keith | India | keith0@adventure-works.com | ||
| C5 | Fabio | España | Madrid | fabio@gmail.com |
SELECT * FROM dbo.Clientes WHERE Nombre not like '%i%' ;| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 | ||
| C3 | Donna | Germany | Berlin | donna0@adventure-works.com | 915547890 |
| C4 | Janet | United States | California | janet1@adventure-works.com |
SELECT * FROM dbo.Clientes WHERE Nombre like 'o%' ; -- empieza por 'o'| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 |
SELECT * FROM dbo.Clientes WHERE Nombre like '%o' ; -- acaba por 'o'| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 | ||
| C5 | Fabio | España | Madrid | fabio@gmail.com |
SELECT * FROM dbo.Clientes WHERE Nombre like '%lan%o' ; -- contiene 'lan' y acaba por 'o'| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C1 | Orlando | Australia | 917755028 |
SELECT * FROM dbo.Clientes WHERE Nombre like '%b%o' ; -- contiene 'b' y acaba por 'o'| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C5 | Fabio | España | Madrid | fabio@gmail.com |
SELECT * FROM dbo.Clientes WHERE Nombre like '%F____' ; -- empieza por 'F' seguida de 4 caracteres| ClienteId | Nombre | Pais | Ciudad | Telefono | |
|---|---|---|---|---|---|
| C5 | Fabio | España | Madrid | fabio@gmail.com |
SELECT * FROM dbo.Clientes WHERE Nombre like '%F__' ; -- empieza por 'F' seguida de 2 caracteres| ClienteId | Nombre | Pais | Ciudad | Telefono |
|---|
17 Count
SELECT COUNT(*) FROM Clientes ;| (No column name) |
|---|
| 5 |
SELECT COUNT(Nombre) FROM Clientes ;| (No column name) |
|---|
| 5 |
18 Min, Max, Sum, Avg
SELECT Min(Precio) FROM Ventas ;| (No column name) |
|---|
| 475 |
SELECT Max(Precio) FROM Ventas ;| (No column name) |
|---|
| 1500 |
SELECT Sum(Precio) FROM Ventas ;| (No column name) |
|---|
| 2674,5 |
SELECT Avg(Precio) FROM Ventas ;| (No column name) |
|---|
| 891,5 |